Node.js readline.createInterface(options)用法及代码示例

您所在的位置:网站首页 js readline函数用法 Node.js readline.createInterface(options)用法及代码示例

Node.js readline.createInterface(options)用法及代码示例

2024-01-16 16:20| 来源: 网络整理| 查看: 265

readline.createInterface(options) 历史 版本变化 v15.14.0、v14.18.0

现在支持signal 选项。

v15.8.0、v14.18.0

现在支持history 选项。

v13.9.0

现在支持tabSize 选项。

v8.3.0、v6.11.4

删除 crlfDelay 选项的最大限制。

v6.6.0

现在支持crlfDelay 选项。

v6.3.0

现在支持prompt 选项。

v6.0.0

historySize 选项现在可以是0。

v0.1.98

添加于:v0.1.98

参数 options input 可读流听。这个选项是必需的. output Writable 流将读取行数据写入。 completer 用于选项卡自动完成的可选函数。 terminal true 如果 input 和 output 流应被视为 TTY,并写入 ANSI/VT100 转义码。 默认: 在实例化时检查 output 流上的 isTTY。 history 历史行的初始列表。只有当terminal 由用户或内部output 检查设置为true 时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认: [] 。 historySize 保留的最大历史行数。要禁用历史记录,请将此值设置为 0 。只有当terminal 被用户或内部output 检查设置为true 时,此选项才有意义,否则根本不会初始化历史缓存机制。 默认: 30 。 removeHistoryDuplicates 如果 true ,当添加到历史列表的新输入行与旧输入行重复时,这将从列表中删除旧行。 默认: false 。 prompt 要使用的提示字符串。 默认: '> ' 。 crlfDelay 如果 \r 和 \n 之间的延迟超过 crlfDelay 毫秒,则 \r 和 \n 将被视为单独的行尾输入。 crlfDelay 将被强制为不小于 100 的数字。它可以设置为 Infinity ,在这种情况下 \r 后跟 \n 将始终被视为单个换行符(对于带有 \r\n 行分隔符的 reading files 可能是合理的)。 默认: 100 。 escapeCodeTimeout 持续时间 readline 将等待一个字符(当读取一个以毫秒为单位的模棱两可的键序列时,它既可以使用目前读取的输入形成完整的键序列,又可以采用额外的输入来完成更长的键顺序)。 默认: 500 。 tabSize 制表符的空格数等于(最小 1)。 默认: 8 。 signal 允许使用 AbortSignal 关闭接口。中止信号将在接口内部调用close。 返回:

readline.createInterface() 方法创建一个新的 readline.Interface 实例。

const readline = require('node:readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout });

创建 readline.Interface 实例后,最常见的情况是监听 'line' 事件:

rl.on('line', (line) => { console.log(`Received: ${line}`); });

如果此实例的terminal 是true,那么如果output 流定义了output.columns 属性并在列发生更改时在output 上发出'resize' 事件( process.stdout 是 TTY 时会自动执行此操作)。

使用 stdin 作为输入创建 readline.Interface 时,程序在收到 EOF character 之前不会终止。要在不等待用户输入的情况下退出,请调用 process.stdin.unref() 。

的使用completer函数#

completer 函数将用户输入的当前行作为参数,并返回带有 2 个条目的 Array:

一个 Array 与完成匹配的条目。 用于匹配的子字符串。

例如:[[substr1, substr2, ...], originalsubstring]。

function completer(line) { const completions = '.help .error .exit .quit .q'.split(' '); const hits = completions.filter((c) => c.startsWith(line)); // Show all completions if none found return [hits.length ? hits : completions, line]; }

如果 completer 函数接受两个参数,则可以异步调用它:

function completer(linePartial, callback) { callback(null, [['123'], linePartial]); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3